main: Protect against non-GtkWindow toplevels
authorTimm Bäder <mail@baedert.org>
Mon, 26 Jun 2017 10:00:20 +0000 (12:00 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 20 Jul 2017 01:27:14 +0000 (21:27 -0400)
gtk/gtkmain.c

index e50a6d644e5cecfe167b6dfe6bfa62bae69e4389..06a974a032c4a990773c2196608e89b912d99637 100644 (file)
@@ -1471,6 +1471,7 @@ handle_pointing_event (GdkEvent *event)
 {
   GtkWidget *target = NULL, *old_target = NULL, *widget;
   GtkWindow *toplevel;
+  GtkWidget *toplevel_widget;
   GdkEventSequence *sequence;
   GdkDevice *device;
   gdouble x, y;
@@ -1480,10 +1481,12 @@ handle_pointing_event (GdkEvent *event)
   if (!device || !gdk_event_get_coords (event, &x, &y))
     return widget;
 
-  toplevel = GTK_WINDOW (gtk_widget_get_toplevel (widget));
-  if (!GTK_IS_WINDOW (toplevel))
+  toplevel_widget = gtk_widget_get_toplevel (widget);
+  if (!GTK_IS_WINDOW (toplevel_widget))
     return widget;
 
+  toplevel = GTK_WINDOW (toplevel_widget);
+
   sequence = gdk_event_get_event_sequence (event);
 
   switch (event->type)